package codeRandomThoughts.Test111二叉树的最小深度;

import codeRandomThoughts.utils.TreeNode;

/**
 * 递归方法,不是我写的
 */
public class Solution2 {
    class Solution {
        /**
         * 思路:
         * 怎么判断节点的最小深度?
         * 如果根节点为空,深度为0
         * 如果根节点不为空,选其左右孩子的最小深度+1
         * 特殊情况:左右孩子可能为空
         * @param root
         * @return
         */
        public int minDepth(TreeNode root) {
            if (root == null) return 0;
            int m1 = minDepth(root.left);
            int m2 = minDepth(root.right);
            //1.如果左孩子和右孩子有为空的情况，直接返回m1+m2+1
            //2.如果都不为空，返回较小深度+1
            return root.left == null || root.right == null ? m1 + m2 + 1 : Math.min(m1, m2) + 1;
        }
    }

}